package psico_test.appEjecutar;

import java.util.Vector;
import javax.realtime.AbsoluteTime;
import javax.realtime.Clock;
import javax.swing.JOptionPane;

import psico_test.utils.file.FileManager;
import psico_test.utils.xml.XMLManager;

public class ManagerResultados 
{
	private static ManagerResultados instance;

	private AbsoluteTime start;
	private Vector retardos;
	private Vector respuestas;

	private FileManager fm;
	private XMLManager xml;

	private ManagerResultados()
	{
		fm = FileManager.getInstance();
		xml = XMLManager.getInstance();

		retardos = new Vector();
		respuestas = new Vector();
	}

	public static ManagerResultados getInstance()
	{
		if(instance == null)
			instance = new ManagerResultados();
		return instance;
	}

	public void traspasarResultados(AbsoluteTime start,Vector tiemposRetardo, Vector tiemposRespuesta)
	{
		retardos = tiemposRetardo;
		respuestas = tiemposRespuesta;
		this.start = start;

		generarTiempos();
	}

	public void mostrar(Vector v)
	{
		System.out.println(v.toString()+":");
		for(int i=0; i<v.size();i++)
			System.out.println(((Clock)v.get(i)).getTime().getMilliseconds()+", "+((Clock)v.get(i)).getTime().getNanoseconds());
		System.out.println();
	}

	private void generarTiempos() 
	{	
		if(respuestas.size()!=retardos.size())
		{
			JOptionPane.showMessageDialog(null,"El número de pulsaciones y de ensayos no concuerda!\nEnsayos:" +
											" "+retardos.size()+"\nPulsaciones: "+respuestas.size());
		}else
		{
			long [] aux = new long[respuestas.size()*2];
			for(int i=0; i<respuestas.size();i++)
			{
				AbsoluteTime ab1 = (AbsoluteTime)respuestas.get(i);
				AbsoluteTime ab2 = (AbsoluteTime)retardos.get(i);
				
				long t1 = ab1.getMilliseconds()*1000000+ab1.getNanoseconds();
				long t2 = ab2.getMilliseconds()*1000000+ab2.getNanoseconds();
				long s = start.getMilliseconds()*1000000+start.getNanoseconds();
				
				aux[(i*2)] = (t2-t1);
				aux[(i*2)+1] = (t2-s);
			}
			xml.generarResultadoXML(aux);
		}
	}
}
